/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package edu.javeriana.aes.psw.termometro.logica;

import edu.javeriana.aes.psw.context.ContextCommunicationController;
import edu.javeriana.aes.psw.context.ContextCommunicationControllerBean;
import edu.javeriana.aes.psw.mensaje.Mensaje;
import java.util.List;




public class ContextControllerTemperatura {

    private ContextConsultaTemperatura consultor;
    private ContextEnvioInfoTemperatura informante;
    private ContextCommunicationController context;
    private int frecRefrescoInfo;

    public ContextControllerTemperatura(){

        frecRefrescoInfo=5;
        context=new ContextCommunicationControllerBean();
        context.saludar();
        
        consultor=new ContextConsultaTemperatura(context);
        informante=new ContextEnvioInfoTemperatura(context);
    }


     public List<Mensaje> obtenerLecturasTerminales() {

         List<Mensaje> temperaturas=consultor.obtenerLecturasTerminales();
         obtenerFrecuenciaPreferida(temperaturas);

         return temperaturas;
     }

     public Mensaje obtenerLecturaLocal(){

         Mensaje dto = informante.obtenerLecturaLocal();
         informante.enviarInformacion(dto,frecRefrescoInfo);
         return dto;
     }

    
    public int getFrecuenciaSeg() {
        return frecRefrescoInfo;
    }
   
    public void setFrecuenciaSeg(int frecuencaSecParam) {

        if(frecuencaSecParam>0){
           frecRefrescoInfo = frecuencaSecParam;           
        }
    }

    private void obtenerFrecuenciaPreferida(List<Mensaje> temperaturas){
        
        long timeStamp=0;

        for(Mensaje dto : temperaturas){

            long timeStampTemporal=dto.getTimestamp();

             if(timeStampTemporal>timeStamp){
                 timeStamp=timeStampTemporal;
                 setFrecuenciaSeg(dto.getFrecuencia());
             }
         }
    }

    public void cerrarConexionesTerminalesRemotas(){
        context.finalizar();
    }

}
